System and method for fine cursor positioning using a low resolution imaging touch screen

ABSTRACT

A system to position an element on a visual display is provided. The disclosed system comprises a touch detection module that detects a touch upon a touch-sensitive surface of a visual display. Also included is a position module that receives input from the touch detection module to derive a position of a touch. Further, an offset module derives an offset for an element of a user interface. Methods of using this system are also provided.

TECHNICAL FIELD

The present invention generally relates to human-computer interfaces andmore specifically to systems and methods for controlling graphical userinterface elements.

BACKGROUND

Human beings interact with computers through some type of interface.Among the most popular types of interfaces is a graphical user interface(GUI) that displays various interface elements on a visual display to beviewed by a user. Ideally, these interface elements are collected insome type of representative environment and each individual element is agraphical depiction of a real-world object that the user will quicklyrecognize and find intuitive. For example, a common paradigm for arepresentative user environment that may be presented on a visualdisplay is the concept of a desktop with elements such asrepresentations of dog-eared pieces of paper to represent documents.

To interact with the computer, the user typically selects an elementwith which to work. In order to do so, the user positions a pointer orcursor in the vicinity of the desired element. Positioning a pointer orcursor may be done using a positioning device such as a mouse, atrackball, a track pad, a pen and tablet, or a similar device inconjunction with a visual display such as a cathode ray tube (CRT)display or a liquid crystal diode (LCD) display. Alternatively,pressure-sensitive display screens, commonly called touch screens, maybe employed as part of the overall user interface. Usually, when a touchscreen is used, the user touches the screen at the approximate locationof a graphical element to interact with that element as an alternativeto using a mouse or other positioning device.

Several types of touch screens are common today. Each type has its ownqualities and usually is pixellated. With a first type, called acapacitive system, the screen comprises several layers. A first layercapable of storing an electrical charge is placed on a second layercomprising a glass panel. When the user touches the monitor, a portionof the stored charge of the first layer is conducted from the firstlayer to the user's body. Therefore, the level of charge stored on thefirst layer decreases. Associated circuits measure this charge decreaseand evaluate the relative differences in charge at each corner of thelayer. From this information, the location of the touch event can bederived.

A second type of touch screen operates on a different principle. Asurface acoustic wave system includes a pair of transducers arrangedalong a glass plate. A first transducer is placed along the x-axis ofthe plate and a second transducer is placed along the y-axis of theplate. One of the transducers operates as a sender and the other as areceiver. Additionally, reflectors are positioned on the glass plate toreflect a signal sent from one transducer to the other. The receivingtransducer is able to determine whether a signal sent by the othertransducer has been disturbed by a touch event. If so, the location ofthat touch event on the screen can be discerned.

A third type of touch screen is described as a resistive system. Theresistive system incorporates multiple layers and includes a glass panelthat is covered with conductive and a resistive metallic layers. Spacersseparate the conductive layer and the resistive layer. Typically, ascratch-resistant layer is placed on top of the surface that will betouched by the user. In operation, electrical currents run through boththe conductive layer and the resistive layer. When a user touches thescreen, the resulting pressure from the touch forces the conductivelayer and the resistive layer into contact. A change in the electricalfield is detected and coordinates of the point of contact, typicallywith reference to a two-dimensional x-y coordinate system, such as aCartesian coordinate system, are determined. Although all three of thesetouch screen types may be employed in conjunction with the systems andmethods disclosed herein, either with or without modifications that willbe apparent to ordinary skilled artisans, touch screens based uponresistive systems are particularly well-suited for use.

When using touch screens, the resolution available to detect touchevents is commonly far lower than the resolution available to displaygraphics associated with the GUI. One approach that may be employed isto determine a pixel region on the screen that has been touched by theuser and to calculate a relative center pixel that can be used as asingle- or sub-pixel position estimate. Even though this approach ispossible, there are still associated problems using the calculatedposition as the point with which a cursor or other pointer isassociated. For example, a common pointer in GUI environments isdepicted on screen as an arrow. Commonly, the pixel at the very tip ofthe arrow-shaped pointer is where the focus lies for tasks involving useof the pointer. This configuration allows for fine levels of control forinteracting with elements of the GUI. However, when the user touches thetouch screen with his finger, the user's finger may be large enough topartially or completely obscure the arrow-shaped pointer from the user'sview. This problem is especially acute when using a touch screen tointeract with GUI elements that are smaller than the size of the user'sfinger. Therefore, there is a need for computer users to be able tofinely control the positioning of a cursor or pointer when using a touchscreen providing relatively coarse levels of touch position detection.

SUMMARY

The following presents a simplified summary in order to provide a basicunderstanding. This summary is not an extensive overview. It is notintended to identify key/critical elements of the invention or todelineate the scope of the invention. Its sole purpose is to presentsome concepts of the invention in a simplified form as a prelude to themore detailed description that is presented later. Additionally, sectionheadings used herein are provided merely for convenience and should notbe taken as limiting in any way.

One aspect of the invention disclosed herein includes systems andmethods to allow a user to exert relatively fine levels of control overa cursor or pointer displayed on a touch screen. Consistent with thisaspect, the system determines a position of an area on the touch screenthat was contacted by the user's finger and calculates an offset to beapplied to the typical pointer position. The system then applies theoffset to the pointer position so that the pointer is no longer locatedunder the user's finger but instead is set to a location in front of,and unobscured by, the user's finger.

Another aspect of the disclosed invention provides an ability to switchbetween coarse and fine levels of cursor or pointer control relativelyautomatically when a user is interacting with a computing system thatincludes a touch screen. This aspect detects when the user has placedhis hand on the screen to create an anchoring position from whichmovements of the user's finger or fingers are used to input commandsthrough the GUI. In accordance with this aspect, the system operates toprovide a course level of control over the pointer, such as where thepointer is simply positioned at the place where the user touches thescreen. When the user has anchored his hand, the system switches modesto provide relatively fine levels of pointer control, such as bycalculating an offset for the pointer position. The detection ofanchoring can be accomplished in a variety of ways, including thedetection of discontinuities in areas detected as touched by the user,detection of movement of a first touched area relative to a secondtouched area, and with reference to mapping functions both with andwithout reference to a priori knowledge of human anatomy. These twomodes of operation can be reversed as well.

In yet another aspect of the invention, positioning of the pointer takesinto account the locations of other GUI elements, for example, thelocation of an on-screen button. By accounting for locations of otherGUI elements, the system can provide more advanced positioningfunctions. For example, the system can position the pointer over anon-screen button that is associated with a default choice.

In still another aspect of the disclosed invention, GUI elements such asmenus are offset from initial rendering positions such that those GUIelements will not be obscured by the user's hand. By offsetting suchelements, the system can ensure that the user has an unobstructed viewof available commands or options. In this manner, the system makes theuser's task of operating the system easier.

In yet a further aspect of the invention, an offset for an element of aGUI can be varied as a function of positions of GUI elements presentedon a display. For example, when a number of small elements arepositioned close together, the invention can increase the offset of aGUI element such as a pointer from the user's hand. When GUI elementsare spaced further apart, the amount of offset can be reduced. Thisscheme can help prevent the user's hand from obscuring displayed GUIelements.

Still another aspect of the invention involves detecting features ofareas touched and using those features to identify a specific user. Whena specific user is identified, a set of preferences can be applied tocustomize operation. For example, a user preference can be applied tovary an amount of offset applied to an element such as a pointer.Additionally, a preference that indicates desired positions of GUIelements to be offset can be applied. Application of these preferencescan be performed automatically upon identification of the user.

To the accomplishment of the foregoing and related ends, the inventionthen, comprises the features hereinafter fully described andparticularly pointed out in the claims. The following description andthe annexed drawings set forth in detail certain illustrative aspects ofthe invention. These aspects are indicative, however, of but a few ofthe various ways in which the principles of the invention may beemployed and the subject invention is intended to include all suchaspects and their equivalents. Other objects, advantages and novelfeatures of the invention will become apparent from the followingdetailed description of the invention when considered in conjunctionwith the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a high-level block diagram of a cursor or pointer positioningsystem in accordance with one aspect of the invention.

FIG. 2 is a block diagram of a cursor or pointer positioning system inaccordance with another aspect of the invention.

FIG. 3 is a block diagram of a cursor or pointer positioning system inaccordance with still another aspect of the invention.

FIG. 4 is a block diagram of a cursor or pointer positioning system inaccordance with yet another aspect of the invention.

FIG. 5 is a block diagram of a cursor or pointer positioning system inaccordance with a further aspect of the invention.

FIG. 6 is a diagram of a portion of a touch-sensitive display in usewith a GUI.

FIG. 7 is a diagram of a portion of the touch-sensitive display in usewith a cursor offset system.

FIG. 8 is a diagram of a touch-sensitive display with a portion of a GUIshown.

FIG. 9 is a diagram of a touch-sensitive display with elements of a GUIshown.

FIG. 10 is a diagram of a touch-sensitive display that uses biometricdata.

FIG. 11 is a flow diagram depicting steps in a method of operating acursor or pointer positioning system in accordance with an additionalaspect of the invention.

FIG. 12 is a flow diagram depicting steps in a method of operating acursor or pointer positioning system in accordance with still anotheraspect of the invention.

FIG. 13 is a flow diagram depicting steps in a method of operating acursor or pointer positioning system in accordance with yet anotheraspect of the invention.

FIG. 14 illustrates an exemplary networking environment, wherein thenovel aspects of the subject invention can be employed.

FIG. 15 illustrates an exemplary operating environment, wherein thenovel aspects of the subject invention can be employed.

DETAILED DESCRIPTION OF THE DRAWINGS

The subject invention relates to systems and methods for positioning acursor or pointer in a computing environment that includes a graphicaluser interface (GUI). The disclosed systems and methods aim to adjustcursor or pointer positioning behavior for users of computing systemsincluding a pressure-sensitive visual display, commonly referred to as atouch screen.

As utilized in this application, terms “component,” “module,” “system,”and the like are intended to refer to a computer-related entity, eitherhardware, software (for example, in execution), and/or firmware. Forexample, a component can be a process running on a processor, aprocessor, an object, an executable, a program, and/or a computer. Byway of illustration, both an application running on a server and theserver can be a component. One or more components can reside within aprocess and a component can be localized on one computer and/ordistributed between two or more computers. Also, the terms “cursor” and“pointer” are used interchangeably and specifically include linecursors, block cursors, arrow-shaped pointers, dot-shaped pointers, andany other indicator of a position on a visual display.

The subject invention is described with reference to the drawings,wherein like reference numerals are used to refer to like elementsthroughout. In the following description, for purposes of explanation,numerous specific details are set forth in order to provide a thoroughunderstanding of the subject invention. It may be evident, however, thatthe subject invention may be practiced without these specific details.In other instances, well-known structures and devices are shown in blockdiagram form in order to facilitate describing the subject invention.

FIG. 1 depicts a cursor positioning system 10. The cursor positioningsystem 10 includes a pressure-sensitive visual display 20. Thepressure-sensitive visual display 20 is commonly referred to as a touchscreen and can be configured to be responsive to data input events inthe form of a touch of a user upon a surface of the display. Varioustypes of touch screens may be employed, including those that operate oncapacitive, acoustic-wave, or resistive principles. Additionally, use ofthe term touch screen includes screens that are vision-based orcapacitance-based, among others, especially those in which proximity toa surface is detected instead of, or in addition to, pressure upon ascreen surface. Typically, and as a convention that will be followedherein, the surface of the touch screen is described as generally planarand includes a generally horizontal axis referred to as the x-axis 22 aswell as a generally vertical axis referred to as the y-axis 24.

Various examples presented implicitly assume that a touch screen has thecapability to provide an observation at each point of contact with thescreen (an “imaging touch screen”). Such a screen is not required forother examples and may be readily used with touch screens that simplyprovide a coordinate of a center of a touched area. In cases where animaging touch screen is assumed, such assumption should not be taken asa statement that the example cannot be implemented without using animaging touch screen, albeit possibly with some modification to thescreen. Rather, these assumptions should be interpreted as preferring animaging touch screen in a particular example.

As another convention used herein, touch screens will be described ashaving two resolutions: a visual or display resolution and a touchresolution. Generally, either type of resolution can be described as afunction of the number of pixels in the screen. The more pixels that areavailable, the higher the resolution. Pixels are usually arranged as atwo-dimensional grid generally along the x- and y- axes of the screen,such as x-axis 22 and y-axis 24. Each pixel can thus be identified by aunique (x, y) coordinate pair and typically each pixel is individuallyaddressable.

Visual or display pixels can be arranged as part of a visual layer thatincludes the described two-dimensional grid. Similarly, touch pixels canbe arranged in a two-dimensional grid as part of a second layer. Thenumber of pixels employed in the touch layer is usually less than thenumber used for the visual layer, yielding a lower resolution for thetouch layer than for the visual layer. In cases where the resolution ofthe touch layer is lower than the resolution of the visual layer, amapping function can be defined to correlate the (x, y) coordinates of atouch pixel to one or more pairs of (x, y) coordinates corresponding tovisual pixels.

The pressure-sensitive visual display 20 is communicatively associatedwith a touch detection module 30. The touch detection module 30 istypically configured to detect a touch event initiated by a user and toactivate the operation of other components that are discussed in detaillater to derive further information related to the detected touch event.For example, as further depicted in FIG. 1, the touch detection module30 is associated with a location module 40. The location module 40 isconfigured to ascertain a location of a touch event upon thepressure-sensitive visual display 20. Customarily, a location isrepresented as an ordered (x, y) pair and this representation is suitedfor use with the cursor positioning system 10. Positive changes invalues along the x- or y-axes indicate changes in position to the rightor up, respectively. Negative changes in values along the x- or y-axesindicate changes in position to the left or down, respectively.Additionally or alternatively, and as is suited for use with someaspects of the cursor positioning system 10, the location module 40 canbe configured to ascertain a set of (x, y) coordinate pairs relating toa set of pixels that were touched by the user.

The location module 40 is associated with an anchor detection module 50.The anchor detection module 50 can be configured to detect an anchoringevent. The concept of “anchoring,” as used herein, refers to therelatively fixed placement of a hand of the user while using thepressure-sensitive visual display 20. The concept of anchoring isderived from an observation that when a user interacts with a touchscreen for relatively coarse control operations such as depressingon-screen buttons, the user typically contacts the touch screen using atip of a finger, usually the index finger. When exerting finer levels ofcontrol, for example, selecting small GUI elements, the user contactsthe screen with more of his hand, usually including one or more otherfingers or the base of the palm of his hand. When more than simply asingle fingertip is in contact with the surface of the touch screen, theuser is said to have “anchored” his hand or that an “anchoring event”has occurred.

An orientation module 60 is also associated with the location module 40.The orientation module 60 is configured to derive an orientation of auser's finger on the pressure-sensitive visual display 20. For example,the user's finger may be substantially vertical or more typically may bedeflected some number of degrees from vertical. As explained more fullybelow, an orientation derivation may occur whether or not the user'shand is anchored by using one or more techniques.

A cursor offset module 70 is associated with the location module 40, aswell as the anchor detection module 50 and the orientation module 60.The cursor offset module 70 is configured to use information relating toa user's touch, specifically including location, orientation, oranchoring information to determine whether to offset a cursor depictedon the visual display and if an offset should be applied, by how much.For the purposes of this document, the term “offset” refers to an amountby which a position of a cursor or pointer is adjusted from an initialreference position at which the pointer would reside without theapplication of an offset. The term “offset” specifically includes thevalue of zero, or no offset.

An offset may be described in terms of a signed (x, y) value pair thatrepresents amounts by which an activation point of the cursor or pointeris to be adjusted. The “activation point” is that portion of a cursor orpointer that must be positioned within the bounds of a GUI element inorder for the user to be able to select that element, for example, byclicking a mouse or tapping on a touch screen. Typically, a body of apointer is rendered on a display relative to the activation point. Forexample, if the activation point of a pointer initially resides at (x,y) coordinates (150, 200) and an offset of (−5, 10) is applied, theactivation point of the pointer (and consequently, the body of thepointer object) will be shifted. The activation point will then resideat (x, y) coordinates (145, 210). The cursor offset module 70 is alsoassociated with a rendering engine 80. The rendering engine 80 isconfigured to receive offset information from the cursor offset module70 and display the pointer on the display at the appropriatecoordinates. As previously mentioned, the appropriate position may ormay not include an offset.

The cursor offset module 70 can also compute gain to be applied tomotion of a cursor or pointer. Gain refers to scaling of motion of aninput to motion of an output or controlled component. For example, if auser moves his finger across a surface of a touch screen at a first rateof motion, the cursor offset module 70 can apply a gain calculation tothe finger motion to cause a cursor or pointer to move across a screenat a second rate of motion. For example, a user may move his fingerrelatively slowly but the cursor or pointer will move very quickly, orvice-versa. An analogous concept is moving a finger a short distancethat results in a large distance of movement of a cursor or pointeron-screen, or vice-versa. Application of gain calculations can providegreater levels of control over cursor or pointer movements.

In operation, the pressure-sensitive visual display 20 serves to presentthe GUI to a user and accept input from the user in the form of toucheson the surface of the screen. The touch detection module 30 detects whena user has touched the surface of the pressure-sensitive visual display20 and activates the location module 40. The location module 40 derivesthe location of the user's touch in the x-y coordinate plane using atleast one of several available methods. As will be apparent to those ofordinary skill in this art, the exact method or methods employed todetermine the location of the user's touch will typically depend on thespecific type of touch screen employed as the pressure-sensitive visualdisplay 20.

The location module 40 is associated with the anchor detection module50, which determines whether an anchoring event has occurred. A varietyof methods may be employed to determine whether a user has anchored hishand, including the detection of discontinuous shapes on thepressure-sensitive visual display 20, derivation based upon heuristic orother suitable algorithms, detection of movement of a portion of atouched area combined with non-movement of another area, and usingknowledge related to the anatomy of a human hand as part of a coordinatesystem. These methods are discussed in further detail in conjunctionwith other figures.

The orientation module 60 determines first what part of an area that hasbeen detected as touched by the user is to be treated as a portionprimarily associated with a pointer and second, that determinedportion's relative orientation in a two-dimensional x-y coordinate planeassociated with the pressure-sensitive visual display 20. Severalmethods are available to orient the pointer portion in the x-ycoordinate plane and such methods are discussed in conjunction withother figures.

The cursor offset module 70 uses location information from the locationmodule 40, anchoring information from the anchor detection module 50,and orientation information from the orientation module 60 to derive acursor offset. For example, one possible application is that if theanchor detection module 50 indicates to the cursor offset module 70 thatno anchoring has occurred, the cursor offset module 70 may determinethat no offset should be applied and send an offset value pair of (0, 0)to the rendering engine 80 which will then position and render thecursor at the place where the user touched the screen. This mode ofoperation may be referred to as absolute cursor positioning in thatwherever the user touches the screen, that is, where the cursor will bepositioned and rendered.

A second mode of operation may be referred to as relative cursorpositioning and may be triggered by the existence of an anchoring event.In this mode, the cursor offset module 70 receives from the anchordetection module 50 an indication that the user has anchored his hand.The cursor offset module 70 then uses location information from thelocation module 40 and the orientation module 60 to determine anappropriate offset value pair. For instance, if the orientation moduleindicates that the user's finger is the pointer portion of the detectedtouched area of the screen and is oriented in a position that isdeflected approximately forty-five degrees (45°) counter-clockwise fromvertical, the appropriate offset may be determined to be up and to theleft (for example, a negative amount along the x-axis 22 and a positiveamount along the y-axis 24) from the user's finger. With this offset,the pointer will appear on-screen to be in front of and to the left ofthe user's finger.

Relative cursor positioning has a number of uses. To the extent thatocclusion of the pointer by a portion of a hand of a user is an issue,an offset from a touched position can ensure that a pointing component,or another component to which an offset can be applied, remains visibleto the user. Also, use of an offset can mitigate issues that arise fromthe fact that there is no unambiguous “tip” of a finger as there is withan on-screen pointer.

The exact amount of an offset to be applied can be determined using avariety of methods. For instance, the amount may be pre-determined atimplementation as a fixed offset amount. Alternatively the offset amountcan be dynamically derived from location and orientation informationbased upon the amount of area detected as touched by the user's hand.Additionally the offset amount can be selected by the user through a GUIcontrol interface such as a control panel. According to the needs anddesires of a specific implementer, a combination of these approaches maybe employed.

FIG. 2 depicts a portion of the cursor positioning system 10 in use by auser. As described with reference to FIG. 1, the pressure-sensitivevisual display 20 is associated with the touch detection module 30,which in turn is associated with the location module 40. The orientationmodule 60 is also associated with the location module 40, as is thecursor offset module 70. The rendering engine 80 is associated with thecursor offset module 70 and also the pressure-sensitive visual display20.

A finger of a user 90 is depicted touching the surface of thepressure-sensitive visual display 20. A center marker 95 depicts theapproximate center of the area of the first segment of the user's finger90 that is in contact with the surface of the pressure-sensitive visualdisplay 20. The finger 90 is aligned with a diagonal reference axis 100that intersects a vertical reference axis 110. As depicted, an angle athat measures approximately forty-five degrees (45°) from the verticalaxis 110 describes the general orientation of the finger 90. A pointer120 created by the rendering engine 80 is depicted as having anactivation point at a tip of its head 125 and offset along the x-axis ofthe pressure-sensitive visual display 20 by a distance b measured fromthe center marker 95 to the activation point of the pointer 120. Thepointer is also displaced along the y-axis of the pressure-sensitivevisual display 20 by a distance c measured from the center marker 95 tothe activation point of the pointer 120. Following the convention setforth earlier, because the direction of displacement along the x-axis isto the left (when viewed from the perspective of the user, as depictedin FIG. 2), the value assigned to distance b will be negative.Similarly, because the direction of displacement along the y-axis is up,the value assigned to distance c will be positive.

FIG. 3 depicts further aspects and details of the cursor positioningsystem 10. The pressure-sensitive visual display 20 is depicted ashaving a touch layer 26 upon which the finger 90 of the user comes intocontact and a visual layer 28. Touch pixels 26 a associated with thetouch layer 26 are mapped to visual pixels 28 a. Although touch pixels26 a and visual pixels 28 a are depicted in a one to one (1:1) mappingarrangement, it should be appreciated that other mappings of more visualpixels to touch pixels are not only possible but likely to be employedin a typical touch screen. Those of ordinary skill in this art will alsoappreciate that described aspects of the pressure-sensitive visualdisplay 20 may differ according to specifics of a particular type ormodel of touch screen employed but that the systems and methodsdiscussed may need only minor modifications, if any, to tailor animplementation of these disclosed systems and methods in a particularinstance.

The finger 90 of the user is again depicted as aligned along thediagonal reference axis 100 that intersects the vertical reference axis110. A deflection angle d is the amount by which the finger 90 isdeflected from vertical. The center marker 95 depicts the actual centerof the area of the first segment of the finger 90 that is in contactwith the pressure-sensitive visual display 20. An area 130 is generallyelliptical and depicts a set of touch pixels detected as touched by thefinger 90. A center marker 135 depicts the center of the area 130. Inthis example, the actual location of the center marker 135 is derived bythe location module 40 using information about the area 130. Forinstance, the location module 40 can attempt to fit the area 130 intoone of a set of preselected geometric shape representations, such as acircle, an oval, an ellipse, a square, a rectangle, or other suitablebounded or unbounded curves or polygons. Once a fit has been made,traditional algorithms can be used to calculate the center of the shape.

Ideally, the location of the calculated center 135 matches the truecenter 95. However, it will be appreciated that some deviation islikely, including deviation caused by mapping from a low resolutiontouch layer to a high resolution visual layer. Such deviation may evenbe desired in implementations that choose to use a “best fit” or “roughestimate” approximation algorithm for reasons such as algorithm speed orthe conservation of scarce computing resources. It should also beappreciated that this particular computing task, as well as othersdescribed herein, may be accomplished using not only general-purposecomputing processors, but also by using a variety of parallelarchitectures, including specifically offloading tasks to a dedicatedgraphics processing unit (GPU).

The orientation module 60 (not shown) can derive the general orientationof the finger 90 of the user by a variety of methods. One example usesinformation regarding the geometric shape into which the location module40 fit the area 130. For instance, when the area 130 is fit into anellipse, a heuristic algorithm may take into account that an ellipse hasboth a major axis and a minor axis and that the best fit for anelliptical shape on the first segment of a finger such as the finger 90is with the major axis of the ellipse aligned with a longitudinal axisrunning along the length of the finger, such as depicted with thediagonal axis 100. The major axis 140 of the ellipse into which area 130was fit can then be used as a proxy for the diagonal axis 100. Ideally,the major axis 140 is parallel to the diagonal axis 100, as depicted byangle e with reference to the vertical reference axis 110 which is equalto angle d. As discussed above, when performing this computing task, thetwo axes may not in fact be truly parallel for reasons of efficiency orother design or implementation choices made.

The cursor offset module uses the location of the center 135, theposition of the major axis 140, and the distances b and c to calculatean offset position 150 along the major axis 140. The distances b and care typically in the form of a signed (x,y) value pair. The offsetposition 150 is then mapped from the touch layer 26 to a correspondingposition 160 on the visual layer 28. The rendering engine 80 positionsthe activation point of the pointer 120 at the corresponding position160 and renders the body of the cursor appropriately, here depicted asalong the diagonal axis 100. Alternatively, mapping between the touchlayer 26 and the visual layer 28 may take place first by correlating theposition of the center 135 of the area 130 to a point on the visuallayer 28 and then applying the offset to reach the position 160.

FIG. 4 depicts a hand 200 of a user in an anchored position on the touchlayer with the finger 90 being used as a pointer portion from which apointer offset may be derived. An area 210 on the touch layer 26 is thearea of contact between the heel of the hand 200 and the touch layer 26.The anchoring of the user's hand on the touch screen can be used as anindication to switch between or among available modes of pointer offsetbehavior. If desired, the cursor positioning system 10 can be run solelyin a cursor offset mode using the systems and methods disclosed herein.However, anchoring detection provides a convenient indicator that can beused to switch between relative cursor positioning and absolutepositioning to take advantage of the fact that some tasks, such assimply operating an on-screen button, do not require the fine level ofpointer control that relative positioning provides.

Detection of anchoring can be used to switch between other modes ofbehavior or control functions as well. For example, detection ofanchoring could be used to zoom into a region of a GUI to provide abetter view of the region. In a painting application, for instance,detection of anchoring, or an amount of anchoring, can be used tocontrol thickness of an on-screen paintbrush. Other applications of modeswitching or function control or both are possible. A more detaileddiscussion of the concept of an amount of anchoring, as opposed tosimply detecting whether an anchoring event has occurred, is providedbelow.

Detection of anchoring can also be used as part of calculating anorientation. For example, a position of an anchored region can becalculated and used with a position of a finger touch to calculate aline between the two positions. That calculated line can be used todetermine an orientation of a finger, cursor, pointer, or othercomponent.

The anchor detection module 50 (FIG. 1) can determine whether ananchoring event has occurred using a variety of methods. Some of thosemethods may include the use of a priori information about the anatomy orphysiology of the human hand. For example, the shape of the human handis well-known. By comparing the shape of the area 210 with a referencemodel of the shapes of areas of contact between regions on the palm-sideof the hand when placed on a planar surface in a variety of positions. Ahigh degree of correlation between a shape of a detected area of touchsuch as area 210 and a shape represented in the reference model cantrigger a determination that anchoring has occurred.

A second technique includes the detection of movement on the touchscreen. For example, if the area 130 is determined to be moving,especially in a generally arc-shaped travel path, such as travel path220, relative to the area 210 which remains in a substantially fixedposition, the anchor detection module 50 can determine that the area 210is formed by the base of the user's hand and that the area 130 is formedby the touch of the tip of the user's pointer finger (albeit the indexfinger or another finger used as the pointer finger) and generate ananchoring event. This technique may be used as an alternative orsupplement to the previously described model-based shape matchingapproach.

A third approach, which may be used as an alternative or supplement toeither or both of the previously described techniques, is to reason fromthe fact that discontinuous areas of contact have been detected. Forexample, as shown in FIG. 4, the area 130 formed by the touch of theuser's finger is discrete from the area 210 formed by the touch of thebase of the user's hand. If these two areas are within the proximityexpected for the touch of an anchored human hand, the anchor detectionmodule 50 can generate an anchoring event. A number of suitablealgorithms are available for determining whether detected touchedregions are continuous, including algorithms from the image processingareas that readily can be adapted to operate on touch pixels instead ofimage pixels. A corollary approach is to detect discontinuities in timebetween touches. For example, if two touches are detected within apreselected amount of time, such detection can be used to trigger ananchoring event. Other manners of incorporating time into detection ofanchoring are possible and will be evident to those of ordinary skill inthe art.

A fourth approach, which also may be used as an alternative orsupplement to the previously described techniques, is to set up afunction representing a degree to which the user's hand can be said tobe anchored. Depending on the level of sophistication desired by animplementer, such a function could be continuous, discontinuous, ordiscrete. One of the simplest possible examples is to create a linearfunction that simply represents the number of pixels simultaneouslytouched by the user. A threshold value (e.g., a minimum number ofpixels) along the function can then be chosen with an anchoring event(e.g., a variable flag) being set when the threshold is exceeded andunset when the function value falls below the threshold. Of course, morecomplex functions that take into account possible discontinuities in theshapes of areas touched by the user's hand or other variables can beused.

The subject invention (e.g., in connection with selection) can employvarious artificial intelligence based schemes for carrying out variousaspects thereof. For example, a process for determining whether a userhas anchored his hand can be facilitated via an automatic classifiersystem and process. Such classifier system and process can be used inconjunction with any of the approaches described above and may beespecially useful where pattern-matching functionality is desired, suchas when coordinate maps are employed or when information relating toshapes of anatomical structures is used.

A classifier is a function that maps an input attribute vector, X=(x₁,x₂, x₃, x₄, . . . x_(n)), to a confidence that the input belongs to aclass, that is, f(x)=confidence(class). Such classification can employ aprobabilistic and/or statistical-based analysis (e.g., factoring intothe analysis utilities and costs) to prognose or infer an action that auser desires to be automatically performed. In the case of pattern orshape matching, for example, attributes can be appropriate shapedescriptors such as mathematical functions and/or values, or otherdata-specific attributes derived from the area of a touch-sensitivescreen that was detected as touched, and the classes are categories orareas of interest such as models of anatomical structures.

A support vector machine (SVM) is an example of a classifier that can beemployed. The SVM operates by finding a hypersurface in the space ofpossible inputs, which hypersurface attempts to split the triggeringcriteria from the non-triggering events. Intuitively, this makes theclassification correct for testing data that is near, but not identicalto, training data. Other directed and undirected model classificationapproaches include, e.g., naive Bayes, Bayesian networks, decisiontrees, and probabilistic classification models providing differentpatterns of independence can be employed. Classification as used hereinalso is inclusive of statistical regression that is utilized to developmodels of priority.

As will be readily appreciated from the subject specification, thesubject invention can employ classifiers that are explicitly trained(e.g., using generic training data) as well as implicitly trained (e.g.,by observing user behavior, receiving extrinsic information). Forexample, SVMs are configured using a learning or training phase within aclassifier constructor and feature selection module. Thus, theclassifier(s) can be used to automatically perform a number offunctions, including but not limited to determining when a event, suchas an anchoring event, has occurred according to a predeterminedcriterion or criteria.

An artificial intelligence-based component can be employed specificallyto perform anchoring detection. Such systems are well suited forpattern-matching tasks, such as those that can be performed to determinewhether a user has anchored his hand based upon a shape or shapes of adetected touch upon a surface of a touch-sensitive display. Additionallyor alternatively an artificial intelligence-based component can be usedto determine orientation and determine whether a user has used his rightor left hand, among other tasks or functions.

The disclosed technique of offsetting a pointer can be adapted for otherGUI elements as well. For example, FIG. 5 depicts use with a commandmenu. The user's hand 200 is depicted in contact with the touch layer 26at area 130 (index finger) and area 210 (heel of hand). Additionally, asecond finger 96 is depicted as having tapped the touch layer 26 at area250. An anchor detection module (not pictured), such as the anchordetection module 50, uses information about the touched areas to derivea “no-render” zone within partially-depicted boundary 260. The no-renderzone is calculated to estimate the approximate total screen area coveredby the hand 200 of the user. Elements of the GUI such as menus orpointers will not be rendered within the no-render zone so thatuser-selectable controls will not be obscured from the user's view bythe user's hand 200.

When the user taps the touch surface 26 with the finger 96 to activate amenu, an offset module, such as the cursor offset module 70, calculatesoffsets 270, 280 by determining distances along the x- and y- axes, suchas distances f and g, respectively, for corners of a menu 290. Arendering engine, such as the rendering engine 80, will render the menu290 at an appropriate place on the screen, taking into account theoffsets calculated by the offset module and the coordinates within theno-render zone. In this manner, GUI elements can be displayed to theuser without being obscured from view.

Still more sophisticated behavior is possible by taking into accounton-screen locations of GUI elements such as buttons. For example, whenthe user positions his hand on the touch screen, the cursor positioningsystem 10 may, through the use of components such as the location module40, take into account a priori knowledge of the layout and sizes of GUIelements to provide pointer behavior such as a “snap-to” function toposition the pointer over a GUI element in the vicinity of the renderedoffset pointer.

FIG. 6 is a diagram of a portion of a touch-sensitive display 300 in usewith a GUI, of which a portion is pictured. The GUI includes a group ofGUI controls 310 that are individually labeled A, B, and C. Each of thecontrols A, B, and C can be, for example, an on-screen button that ismapped to a program function that is executed upon activation of thebutton by clicking or otherwise selecting the button. A finger 320 of auser's hand is shown positioned above the group of GUI controls 310 forperspective and clarity of presentation. In use, the finger 320 of theuser will normally be in contact with a surface of the touch-sensitivedisplay 300.

Perspective lines 330, 340 are shown leading from underneath an end ofthe finger 320 of the user to the surface of the touch-sensitive display300. A region between the perspective lines 330, 340 indicates a regionof contact between the finger 320 of the user and the surface of thetouch-sensitive screen 300. As shown, that region of contact covers notonly all of control B, but also portions of control A and control C. Ifthe user has only his finger with which to select controls of the GUI,selecting individual controls can be difficult at least partly becauseof relative size differences between the finger 320 of the user andindividual controls of the group of GUI controls 310. It should be notedthat in this example, the user merely touches the surface of thetouch-sensitive display 300 to select or otherwise operate GUI controlssuch as those included in the group of GUI controls 310.

In operation, the user can touch the surface of the touch-sensitivedisplay 300 in the region of the group of GUI controls 310 with hisfinger 320 to cause the touch-sensitive display to register a touchevent. In one example, depending upon the particular type of touchscreen used, the touch can be interpreted as occurring at a single pixelthat can be within a region of an individual control of the group of GUIcontrols 310. In such case, the touch can be interpreted as selectingthe individual control. Because the finger 320 obscures view of theindividual control of the group of GUI controls 310, the user can beuncertain whether he has selected or activated the individual control heintended to activate.

In another example, also depending upon the type of touch-sensitivedisplay employed, the touch can be detected as occurring at a group ofpixels. The area of this group can be larger than the area of a controlthe user intends to select or activate. If so, the user can find thatthe touch has selected or activated an intended control, more than onecontrol including the intended control, more than one control notincluding the intended control, or no control at all. Again, useruncertainty as to what is being controlled can result. Other scenariosare possible depending upon the type of touch-sensitive display used andGUI employed, among other factors.

FIG. 7 depicts a portion of the touch-sensitive display 300 in use witha cursor offset system applied. A pointer 350 includes a tip 360 thatcan be a point of activation in the sense that use of the pointer toselect or activate GUI elements such as those of the group of GUIcontrols 310 can be performed by positioning the tip 360 of the pointer350 over a control to be selected or activated. The pointer 320 is shownoffset a distance from the tip of the finger 320 of the user.

As shown, the tip 360 of the pointer 350 is smaller than any of theindividual controls of the group of GUI controls 310. Typically, the tip360 of the pointer 350 is a single pixel. Such a size differentialbetween the individual controls of the group of GUI controls 310 and thetip 360 of the pointer 350 can enable control at a finer level ofgranularity than simply using the finger 320 of the user.

In operation, the user can touch the surface of the touch-sensitivedisplay 300 with his finger 320. The pointer 350 can be positioned infront of the finger 320 such that view of the pointer 350 is notobscured by the finger 320. The pointer 350 can be positioned relativeto the finger 320 such that the pointer 350 moves as the finger 320moves. The tip 360 of the pointer 350 can be the reference point that isused to determine what, if any, portion of the GUI is selected oractivated by the user.

The user can move the finger 320 to cause the pointer 350 to move suchthat the tip 360 of the pointer 350 is within an area of a control to beselected or activated. Using the tip 360 of the pointer 350 providesfiner control ability as well as an unobscured view of the region, inthis case, the tip 360 of the pointer 350) that can be used forselection or activation of GIU controls. The potential for userconfusion regarding what control the user is selecting or activating, ifany, can thereby be reduced.

FIG. 8 is a system block diagram of a touch-sensitive display 400 with aportion of a GUI 410 shown. The portion of the GUI 410 includes a groupof elements A, B, C, D, E, F, G, H, and I in a relatively tight spatialarrangement. The portion of the GUI 410 interacts with a GUI layoutmanager 420. The GUI layout manager 420 can control and determine anarrangement of GUI elements, such as elements A, B, C, D, E, F, G, H,and I, as such elements are presented on the touch-sensitive display400. The GUI layout manager 420 can also interact with an offset module430 to provide information regarding arrangement of GUI elements thatthe offset module 430 can use to adjust an offset of a pointer 440 froma finger 450 of a user.

In the example depicted, the GUI layout manager 420 can send informationto the offset module 430 that indicates that elements A, B, C, D, E, F,G, H, and I of the GUI are closely spaced together. Such information canbe a simple flag that indicates close spacing as opposed to a morespatially distributed arrangement or can be more complex, for oneexample, a value determined as a function of variables such as number ofGUI elements displayed, size of each element, and total display size,among others.

As shown, the GUI layout manager 420 indicated to the offset module thata closely spaced arrangement of elements has been presented on thetouch-sensitive display 400. The offset module 430 can use thisinformation, and optionally combine this information with one or moreuser-selectable behavior preferences, to determine an appropriate offsetfor the pointer 440 from the finger 450. The amount of the offset, shownas distance x, is relatively large to reduce the chance that the finger450 obscures view of the elements A, B, C, D, E, F, G, H, and I. Amongthe set of user-selectable preferences possible to access whendetermining an offset amount are a range of offset amounts and specificplacement options for the pointer 440 such as placement in front of, tothe right of, or to the left of the finger 450. Of course, otheruser-selectable preferences can be used.

FIG. 9 is a system block diagram of a touch-sensitive display 500 withelements of a GUI 510, 520, 530 shown. The elements 510, 520, 530 of theGUI are displayed in a relatively distributed spatial arrangement.Positioning of the elements 510, 520, 530 can be controlled by a layoutmanager 540. The layout manager 540 can control and determine anarrangement of GUI elements, such as elements 510, 520, 530, as thoseelements are presented on the touch-sensitive display 500. The layoutmanager 540 can also interact with an offset module 550 to provideinformation regarding arrangement of GUI elements that the offset module540 can use to adjust an offset of a pointer 560 from a finger 570 of auser.

In the example depicted, the layout manager 540 can send information tothe offset module 550 that indicates that elements 510, 520, 530 of theGUI are spaced in a relatively distributed fashion. Such information canbe a simple flag that indicates distributed spacing as opposed to adenser spatially distributed arrangement or can be more complex, for oneexample, a value determined as a function of variables such as number ofGUI elements displayed, size of each element, and total display size,among others.

As shown, the GUI layout manager has indicated to the offset module thata distributed arrangement of elements has been presented on thetouch-sensitive display 500. The offset module 550 can use thisinformation, and optionally combine this information with one or moreuser-selectable behavior preferences, to determine an appropriate offsetfor the pointer 560 from the finger 570. The amount of the offset, shownas distance y, is relatively small, because of a lower potential withsuch a spatial arrangement for the finger 570 to obscure view of theelements 510, 520, 530. Among the set of user-selectable preferencespossible to access when determining an offset amount are a range ofoffset amounts and specific placement options for the pointer 560 suchas placement in front of, to the right of, or to the left of the finger570. Of course, other user-selectable preferences can be used.

FIG. 10 is a system block diagram of a touch-sensitive display 600 thatuses biometric data. A hand 610 of a user includes a finger 620 and aheel 630. The hand 610 can contact a surface of the touch-sensitivedisplay 600 to form regions of contact 640, 650. A location module 660can detect that a touch has occurred and can determine furtherinformation about the touch, such as amount(s) of area(s) touched,shape(s), position(s), and orientation(s), among others. It should beappreciated that although in the example presented two discontinuousregions are shown, depending upon use and other factors a greater orfewer number of regions can be present.

The location module 660 can send information about the touch to abiometric module 670. The biometric module 670 can use information aboutthe touch to identify a specific user. Once identified, the biometricmodule can send identification information to other components, such asa preferences module 680, to automatically apply individual userpreferences to customize operation for the user.

FIGS. 11-13 illustrate exemplary methodologies in accordance with thesubject invention. For simplicity of explanation, these methodologiesare depicted and described as a series of acts. Those of ordinary skillin the art will understand and appreciate that the subject invention isneither limited by the specific exemplary acts illustrated nor limitedby the order of such acts. Skilled artisans will recognize that thedescribed exemplary acts can occur in various orders and/orconcurrently, and with other acts not presented and described herein.Furthermore, not all illustrated acts may be required to implement themethodologies in accordance with the subject invention. In addition,those skilled in the art will understand and appreciate that thedescribed exemplary methodologies could alternatively be represented asa series of interrelated states via a state diagram or events.

FIG. 11 depicts a general methodology 700 for switching between modes ofpointer behavior. The method begins at START block 710. Process block720 indicates that the system is idle and waiting for a touch event tooccur. Decision block 730 depicts a check (such as with aninterrupt-driven system or a polling system) to determine whether atouch has been detected. If no touch is detected, the system returns toidle process 720. When a touch is detected, processing continues atdecision block 740 to determine whether an anchoring event has occurred.If no anchoring event has been detected, processing occurs at processblock 750 where the system performs absolute cursor positioning, forexample, placing a pointer at a touched location on a touch screen.Alternatively, if an anchoring event is detected at decision block 760,processing occurs at process block 770 where the system performs offsetcursor positioning, possibly by using one of the previously describedtechniques. Skilled artisans will readily recognize that the positionsof process blocks 750 and 760 can be reversed such that the detection ofanchoring at decision block 740 leads to absolute cursor positioning anda failure to detect anchoring leads to offset cursor positioning.

The processing path from either process block 750 or process block 760continues at decision block 770 where a determination is made whether toterminate processing. If the determination is negative, processingcontinues back at process block 720 where the system remains idle untila touch is detected. If the determination is positive, processingconcludes at END block 780.

FIG. 12 depicts a method 800 for switching between absolute cursorpositioning and offset cursor positioning based upon whether ananchoring event has occurred. Processing of the method 800 begins atSTART block 810 and continues at process block 820 where the systemremains idle until a first touch event is detected at decision block830. If no touch is detected, processing returns to process block 820where the system idles. If a first touch event is detected, processingcontinues at decision block 840 where a determination is made whether asecond touch event has been detected. If not, processing continues atprocess block 850 where the system performs absolute cursor positioning.If a second touch is detected, processing continues at decision block860 where a check is performed to see if a duration of the seconddetected touch event exceeds a minimum duration threshold to preventfurther processing based upon accidental or incidental second detectedtouches. If the check fails, processing returns to process block 850where the system performs absolute cursor positioning. If the check atdecision block 860 is successful, processing continues at process block870 where an anchoring event is generated.

Further processing occurs at process block 880 where the system performsoffset cursor positioning. At decision block 890 a determination is madewhether to terminate processing. If that determination is negative,processing returns to process block 820 where the system remains idle.If the determination made at decision block 890 is positive, processingterminates at END block 895.

FIG. 13 depicts another method 900 for switching between absolute cursorpositioning and offset cursor positioning based upon whether ananchoring event has occurred. Processing of the method 900 begins atSTART block 910 and continues at process block 920 where the systemremains idle until a first touch event is detected at decision block930. If no touch is detected processing returns to process block 920where the system idles. If a first touch event is detected, processingcontinues at process block 940 where the system performs absolute cursorpositioning. Processing then continues at decision block 950 where adetermination is made whether a second touch event has been detected. Ifnot, processing continues at process block 940 where the systemcontinues to operate using absolute cursor positioning.

If a second touch is detected, processing continues at process block 960where a coordinate map representing areas of a touch screen that havebeen touched by a user is created. Processing then continues at processblock 970 where an orientation of a finger of the hand of the user isderived, usually by employing one of the previously described methods.At process block 980, an anchoring event is created. At process block985, the system engages in offset cursor positioning. Processing thencontinues at decision block 990 where a check is performed to see ifprocessing should be terminated. If that check is negative, processingreturns to process block 920 where the system remains idle. If thedetermination made at decision block 990 is positive, processingterminates at END block 995.

In order to provide additional context for implementing various aspectsof the subject invention, FIGS. 14-15 and the following discussion isintended to provide a brief, general description of a suitable computingenvironment within which various aspects of the subject invention may beimplemented. While the invention has been described above in the generalcontext of computer-executable instructions of a computer program thatruns on a local computer and/or remote computer, those skilled in theart will recognize that the invention also may be implemented incombination with other program modules. Generally, program modulesinclude routines, programs, components, data structures, etc., thatperform particular tasks and/or implement particular abstract datatypes.

Moreover, those skilled in the art will appreciate that the inventivemethods may be practiced with other computer system configurations,including single-processor or multi-processor computer systems,minicomputers, mainframe computers, as well as personal computers,hand-held computing devices, microprocessor-based and/or programmableconsumer electronics, and the like, each of which may operativelycommunicate with one or more associated devices. The illustrated aspectsof the invention may also be practiced in distributed computingenvironments where certain tasks are performed by remote processingdevices that are linked through a communications network. However, some,if not all, aspects of the invention may be practiced on stand-alonecomputers. In a distributed computing environment, program modules maybe located in local and/or remote memory storage devices.

FIG. 14 is a schematic block diagram of a sample-computing environment1000 with which the subject invention can interact. The system 1000includes one or more client(s) 1010. The client(s) 1010 can be hardwareand/or software (e.g., threads, processes, computing devices). Thesystem 1000 also includes one or more server(s) 1020. The server(s) 1020can be hardware and/or software (e.g., threads, processes, computingdevices). The servers 1020 can house threads or processes to performtransformations by employing the subject invention, for example.

One possible means of communication between a client 1010 and a server1020 can be in the form of a data packet adapted to be transmittedbetween two or more computer processes. The system 1000 includes acommunication framework 1040 that can be employed to facilitatecommunications between the client(s) 1010 and the server(s) 1020. Theclient(s) 1010 are operably associated with one or more client datastore(s) 1050 that can be employed to store information local to theclient(s) 1010. Similarly, the server(s) 1020 are operably associatedwith one or more server data store(s) 1030 that can be employed to storeinformation local to the servers 1040.

With reference to FIG. 15, an exemplary environment 1100 forimplementing various aspects of the invention includes a computer 1112.The computer 1112 includes a processing unit 1114, a system memory 1116,and a system bus 1118. The system bus 1118 couples system componentsincluding, but not limited to, the system memory 1116 to the processingunit 1114. The processing unit 1114 can be any of various availableprocessors. Dual microprocessors and other multiprocessor architecturesalso can be employed as the processing unit 1114.

The system bus 1118 can be any of several types of bus structure(s)including the memory bus or memory controller, a peripheral bus orexternal bus, and/or a local bus using any variety of available busarchitectures including, but not limited to, Industrial StandardArchitecture (ISA), Micro-Channel Architecture (MSA), Extended ISA(EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB),Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus(USB), Advanced Graphics Port (AGP), Personal Computer Memory CardInternational Association bus (PCMCIA), Firewire (IEEE 1394), and SmallComputer Systems Interface (SCSI).

The system memory 1116 includes volatile memory 1120 and nonvolatilememory 1122. The basic input/output system (BIOS), containing the basicroutines to transfer information between elements within the computer1112, such as during start-up, is stored in nonvolatile memory 1122. Byway of illustration, and not limitation, nonvolatile memory 1122 caninclude read only memory (ROM), programmable ROM (PROM), electricallyprogrammable ROM (EPROM), electrically erasable ROM (EEPROM), or flashmemory. Volatile memory 1120 includes random access memory (RAM), whichacts as external cache memory. By way of illustration and notlimitation, RAM is available in many forms such as synchronous RAM(SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rateSDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), anddirect Rambus RAM (DRRAM).

Computer 1112 also includes removable/non-removable,volatile/non-volatile computer storage media. For example, FIG. 10illustrates a disk storage 1124. The disk storage 1124 includes, but isnot limited to, devices like a magnetic disk drive, floppy disk drive,tape drive, Jaz drive, Zip drive, LS- 100 drive, flash memory card, ormemory stick. In addition, disk storage 1124 can include storage mediaseparately or in combination with other storage media including, but notlimited to, an optical disk drive such as a compact disk ROM device(CD-ROM), CD recordable drive (CD-R Drive), CD rewritable drive (CD-RWDrive) or a digital versatile disk ROM drive (DVD-ROM). To facilitateconnection of the disk storage devices 1124 to the system bus 1118, aremovable or non-removable interface is typically used such as interface1126.

It is to be appreciated that FIG. 10 describes software that acts as anintermediary between users and the basic computer resources described inthe suitable operating environment 1100. Such software includes anoperating system 1128. The operating system 1128, which can be stored onthe disk storage 1124, acts to control and allocate resources of thecomputer system 1112. System applications 1130 take advantage of themanagement of resources by operating system 1128 through program modules1132 and program data 1134 stored either in system memory 1116 or ondisk storage 1124. It is to be appreciated that the subject inventioncan be implemented with various operating systems or combinations ofoperating systems.

A user enters commands or information into the computer 1112 throughinput device(s) 1136. The input devices 1136 include, but are notlimited to, a pointing device such as a mouse, trackball, stylus, touchpad, keyboard, microphone, joystick, game pad, satellite dish, scanner,TV tuner card, digital camera, digital video camera, web camera, and thelike. These and other input devices connect to the processing unit 1114through the system bus 1118 via interface port(s) 1138. Interfaceport(s) 1138 include, for example, a serial port, a parallel port, agame port, and a universal serial bus (USB). Output device(s) 1140 usesome of the same type of ports as input device(s) 1136. Thus, forexample, a USB port may be used to provide input to computer 1112, andto output information from computer 1112 to an output device 1140.Output adapter 1142 is provided to illustrate that there are some outputdevices 1140 like monitors, speakers, and printers, among other outputdevices 1140, which require special adapters. The output adapters 1142include, by way of illustration and not limitation, video and soundcards that provide a means of connection between the output device 1140and the system bus 1118. It should be noted that other devices and/orsystems of devices provide both input and output capabilities such asremote computer(s) 1144.

Computer 1112 can operate in a networked environment using logicalconnections to one or more remote computers, such as remote computer(s)1144. The remote computer(s) 1144 can be a personal computer, a server,a router, a network PC, a workstation, a microprocessor based appliance,a peer device or other common network node and the like, and typicallyincludes many or all of the elements described relative to computer1112. For purposes of brevity, only a memory storage device 1146 isillustrated with remote computer(s) 1144. Remote computer(s) 1144 islogically associated with computer 1112 through a network interface 1148and then physically connected via communication connection 1150. Networkinterface 1148 encompasses wire and/or wireless communication networkssuch as local-area networks (LAN) and wide-area networks (WAN). LANtechnologies include Fiber Distributed Data Interface (FDDI), CopperDistributed Data Interface (CDDI), Ethernet, Token Ring and the like.WAN technologies include, but are not limited to, point-to-point links,circuit switching networks like Integrated Services Digital Networks(ISDN) and variations thereon, packet switching networks, and DigitalSubscriber Lines (DSL).

Communication connection(s) 1150 refers to the hardware/softwareemployed to connect the network interface 1148 to the bus 1118. Whilecommunication connection 1150 is shown for illustrative clarity insidecomputer 1112, it can also be external to computer 11 12. Thehardware/software necessary for connection to the network interface 1148includes, for exemplary purposes only, internal and externaltechnologies such as, modems including regular telephone grade modems,cable modems and DSL modems, ISDN adapters, and Ethernet cards.

What has been described above includes examples of the subjectinvention. It is, of course, not possible to describe every conceivablecombination of components or methodologies for purposes of describingthe subject invention, but one of ordinary skill in the art mayrecognize that many further combinations and permutations of the subjectinvention are possible. Accordingly, the subject invention is intendedto embrace all such alterations, modifications, and variations that fallwithin the spirit and scope of the appended claims.

In particular and in regard to the various functions performed by theabove described components, devices, circuits, systems and the like, theterms (including a reference to a “means”) used to describe suchcomponents are intended to correspond, unless otherwise indicated, toany component which performs the specified function of the describedcomponent (e.g., a functional equivalent), even though not structurallyequivalent to the disclosed structure, which performs the function inthe herein illustrated exemplary aspects of the invention. In thisregard, it will also be recognized that the invention includes a systemas well as a computer-readable medium having computer-executableinstructions for performing the acts and/or events of the variousmethods of the invention.

In addition, while a particular feature of the invention may have beendisclosed with respect to only one of several implementations, suchfeature may be combined with one or more other features of the otherimplementations as may be desired and advantageous for any given orparticular application. Furthermore, to the extent that the terms“includes,” and “including” and variants thereof are used in either thedetailed description or the claims, these terms are intended to beinclusive in a manner similar to the term “comprising.”

1. A system for positioning an element on a visual display, comprising:a touch detection module that detects a touch upon a touch-sensitivesurface of a visual display; a position module that derives a positionof the touch; and an offset module that uses the position of the touchto derive an offset for an element of a user interface.
 2. The system ofclaim 1, further comprising an anchor detection module that uses thedetected touch to detect an anchoring event that indicates that a userhas touched the touch-sensitive surface in a manner consistent with adesire to exercise fine levels of control.
 3. The system of claim 2,wherein the anchor detection module detects an anchoring event based atleast in part upon an approach selected from the group consisting of: adetermination that two or more touched areas are discontinuous; adetermination that a first touched area has changed its positionrelative to a second touched area; and a determination that a change inposition of a first touched area relative to a second touched area isconsistent with movement of a portion of a human hand upon a planarsurface.
 4. The system of claim 2, wherein the anchor detection moduledetects an anchoring event based at least in part upon at least oneapproach selected from the group consisting of: a reference to acoordinate map; a reference to information relating to human anatomicalstructures; and a reference to information relating to anatomicalstructures of a human hand.
 5. The system of claim 2, wherein the anchordetection module detects an anchoring event based at least in part uponat least one approach selected from the group consisting of: a referenceto a continuous function that represents a degree to which anchoring hasoccurred; a reference to a substantially continuous function thatrepresents a degree to which anchoring has occurred; a reference to adiscontinuous function that represents a degree to which anchoring hasoccurred; and a reference to a discrete function that represents adegree to which anchoring has occurred.
 6. The system of claim 2,further comprising an orientation module that uses the position tocalculate an orientation.
 7. The system of claim 6, wherein theorientation module calculates an orientation based at least in part uponan approach selected from the group consisting of: a shape of a touchedarea; a reference to information relating to human anatomicalstructures; and a reference to information relating to anatomicalstructures of a human hand.
 8. The system of claim 1, wherein theelement of a user interface is selected from the group consisting of acursor, a pointer, a menu, and a button.
 9. A method for positioning anelement of a graphical user interface on a visual display, comprising:detecting a touch on at least a portion of a touch-sensitive visualdisplay; calculating a position of the detected touch; and calculatingan offset for an element to be positioned on a visual display from thecalculated position.
 10. The method of claim 9, further comprisingdetermining whether a fine level of control for the element isindicated.
 11. The method of claim 10, wherein calculating an offset isbased at least in part on a result of determining whether a fine levelof control for the element is indicated.
 12. The method of claim 10,wherein determining whether a fine level of control for the element isindicated comprises: detecting a second touch on at least a portion of atouch-sensitive visual display; calculating a first area affected by thefirst touch; calculating a second area affected by the second touch; anddetermining that the first and second areas are substantially separate.13. The method of claim 10, wherein determining whether a fine level ofcontrol for the element is indicated comprises at least one of:determining a degree to which a user has anchored a hand by using areference function; determining a correlation between a shape of an areaaffected by the touch and a shape of a structure of a human hand; andcalculating whether an amount of time elapsed between the detection ofthe first touch and a detection of a second touch is within apredetermined range.
 14. The method of claim 10, further comprisingcalculating an orientation of a touched area.
 15. The method of claim14, wherein calculating an orientation comprises at least one of:calculating an axis through the shape of the area; and comparing a mapof an area affected by the touch with properties of anatomicalstructures of a human hand.
 16. Computer-interpretable instructions tocause a computer to perform the method of claim 9, embodied in a formselected from: a computer-readable medium; and a data signal.
 17. Asystem to position an element on a visual display, comprising: means fordetecting a touch on at least a portion of a touch-sensitive visualdisplay; means for calculating a position of the touch; and means forcalculating an offset for an element to be positioned on a visualdisplay from the calculated position.
 18. The system of claim 17,further comprising means for determining whether a fine level of controlfor the element is indicated.
 19. The system of claim 18, furthercomprising means for calculating an orientation of a touched area. 20.The system of claim 18, wherein the means for determining comprises atleast one of: means for detecting a second touch by a user on at least aportion of a touch-sensitive visual display, calculating a first areaaffected by the touch, calculating a second area affected by a secondtouch, and determining that the first area and the second area aresubstantially separate; means for creating a coordinate map representinga touched region; means for determining a degree to which a user hasanchored a hand by using a reference function; means for determining acorrelation between a shape of a touched area and a shape of a structureof a human hand; and means for calculating whether an amount of timeelapsed between the detection of the touch and a detection of a secondtouch is within a predetermined range.